DAL ReadAll of SelectAll methode
Home

DAL ReadAll of SelectAll methode

DAL ReadAll of SelectAll methode

Alle rijen uit SQL tabel omzetten naar een C# gegevenstructuur (Object Relational Mapping of ORM). Soms gebruiken we de CRUD terminologie en soms de SQL terminologie.

Probleem

We moeten alle rienj uit een SQL tabel kunnen omzetten naar een gegevenstype dat door C# begrepen en gemanipuleerd kan worden.

Design

We zetten één rij van de tabel om in een object van het type OrderStatus model. En alle rijen stoppen we in een generieke lijst OrderStatus objecten. We moeten er rekening mee houden dat een kolom in SQL de waarde NULL kan hebben. Om geen foutemelding in C# te krijgen moeten we die mogelijkheid onderscheppen door eerst te testen als de kolom geen NULL waarde heeft. Dat doen we met de IsDbNull methode. De GetOrdinal methode retourneert het volgnummer van de kolom in de tabel en dus ook in de datadictionary die door de datareader geretourneerd wordt.

Oplossing

public List<Models.OrderStatus> ReadAll()
{
    List<Models.OrderStatus> list = new List<Models.OrderStatus>();
    SqlConnection connection = new SqlConnection();
    connection.ConnectionString = ConfigurationManager.
        ConnectionStrings["WebwinkelWindowsAuthentication"].ToString();
    SqlCommand command = new SqlCommand();
    // in de CommandText eigenschap stoppen we de naam
    // van de stored procedure
    string sqlString = "OrderStatusSelectAll";
    // zeg aan het command object dat het een stored procedure
    // zal krijgen en geen SQL Statement
    command.CommandType = CommandType.StoredProcedure;
    // stop het sql statement in het command object
    command.CommandText = sqlString;
    // geeft het connection object door aan het command object
    command.Connection = connection;
    this.message = "Niets te melden";
    // we gaan ervan uit dat het mislukt
    SqlDataReader result = null;
    using (connection)
    {
        try
        {
            connection.Open();
            //Verbinding geslaagd
            this.message = "Connectie is open";

            using (result = command.ExecuteReader())
            {
                if (result.HasRows)
                {
                    // lees de gevonden rij in
                    this.message = " OrderStatus rijen gevonden.";
                    while (result.Read())
                    {
                        Webwinkel.Models.OrderStatus orderStatus =
                            new Models.OrderStatus();
                        orderStatus.Name =
                            (result.IsDBNull(result.GetOrdinal("Name")) ? "" :
                            result[result.GetOrdinal("Name")].ToString());
                        orderStatus.Id =
                            (result.IsDBNull(result.GetOrdinal("Id")) ? 0 :
                            Int32.Parse(result[result.GetOrdinal("Id")].ToString()));
                        list.Add(orderStatus);
                    }
                }
                else
                {
                    this.message = " OrderStatus rijen niet gevonden.";
                }
            }
        }
        catch (SqlException e)
        {
            this.message = e.Message;
        }
    }
    return list;
}

JI
2017-01-21 16:25:50